/**
 * File    : ComboBoxFieldBinding.java
 * Created : 2009-3-30
 * By      : LuHuiguo
 */
package com.luhuiguo.cms.client.widget.binding;

import com.extjs.gxt.ui.client.binding.FieldBinding;
import com.extjs.gxt.ui.client.data.ModelData;
import com.extjs.gxt.ui.client.widget.form.ComboBox;

/**
 * 下拉框绑定。
 * 
 * @author LuHuiguo
 * @version $Id: ComboBoxFieldBinding.java 163 2010-05-10 15:36:28Z luhuiguo@gmail.com $
 */
public class ComboBoxFieldBinding<D extends ModelData> extends FieldBinding {

    /**
     * 绑定的下拉框。
     */
    protected ComboBox<D> field;

    /**
     * 值属性字段。
     */
    protected String valueProperty;

    /**
     * 构造函数。
     * 
     * @param field
     *            绑定的输入框
     * @param valueProperty
     *            值的属性
     * @param property
     *            绑定的属性
     */
    public ComboBoxFieldBinding(ComboBox<D> field, String valueProperty, String property) {
        super(field, property);
        this.field = field;
        this.valueProperty = valueProperty;
    }

    /**
     * {@inheritDoc}
     * 
     * @see com.extjs.gxt.ui.client.binding.FieldBinding#onConvertFieldValue(java.lang.Object)
     */
    @Override
    protected Object onConvertFieldValue(Object value) {
        return field.getValue().get(valueProperty);
    }

    /**
     * {@inheritDoc}
     * 
     * @see com.extjs.gxt.ui.client.binding.FieldBinding#onConvertModelValue(java.lang.Object)
     */
    @Override
    protected Object onConvertModelValue(Object value) {
        return field.getStore().findModel(valueProperty, value);
    }

}
